// test_bank_data_post.js
// 测试POST请求是否能将银行流水数据存入数据库

const axios = require('axios');
const fs = require('fs');

// 读取银行流水数据文件
const bankData = JSON.parse(fs.readFileSync('通过插件拦截响应数据（杭州银行流水）.md', 'utf8'));

// 发送数据到API
async function sendBankData() {
  try {
    console.log('🚀 正在发送银行流水数据到API...');
    console.log('📊 数据批次ID:', bankData.batchId);
    console.log('📊 数据条数:', bankData.data.length);
    
    // 发送数据到API (使用正确的端口和路径)
    const response = await axios.post('http://127.0.0.1:9001/api/v1/plugin/data/receive', bankData);
    
    console.log('✅ 数据发送成功!');
    console.log('📥 API响应:', response.data);
    
    return response.data;
  } catch (error) {
    console.error('❌ 发送数据失败:', error.message);
    if (error.response) {
      console.error('📋 错误详情:', error.response.data);
    }
    throw error;
  }
}

// 查询处理状态
async function checkProcessingStatus(batchId) {
  try {
    console.log('🔍 查询数据处理状态...');
    
    const response = await axios.get(`http://127.0.0.1:9001/api/v1/plugin/data/status?batchId=${batchId}`);
    
    console.log('📊 处理状态:', response.data);
    return response.data;
  } catch (error) {
    console.error('❌ 查询处理状态失败:', error.message);
    if (error.response) {
      console.error('📋 错误详情:', error.response.data);
    }
    throw error;
  }
}

// 查询银行流水表数据
async function checkBankTransactions() {
  try {
    console.log('🔍 查询银行流水表数据...');
    
    // 这里需要使用数据库查询来检查数据是否已存入银行流水表
    // 由于这是一个独立的测试脚本，我们需要模拟这个过程
    console.log('📋 注意: 需要手动检查数据库中的bank_transactions表来验证数据是否已正确存入');
    
  } catch (error) {
    console.error('❌ 查询银行流水数据失败:', error.message);
    throw error;
  }
}

// 主函数
async function main() {
  try {
    console.log('🚀 开始测试银行流水数据POST请求...');
    
    // 1. 发送银行流水数据
    const result = await sendBankData();
    
    // 2. 等待一段时间让后台处理
    console.log('⏳ 等待数据处理...');
    await new Promise(resolve => setTimeout(resolve, 5000));
    
    // 3. 查询处理状态
    if (result && result.data && result.data.batchId) {
      await checkProcessingStatus(result.data.batchId);
    }
    
    // 4. 查询银行流水表
    await checkBankTransactions();
    
    console.log('✅ 测试完成!');
  } catch (error) {
    console.error('❌ 测试失败:', error.message);
    process.exit(1);
  }
}

// 执行主函数
if (require.main === module) {
  main();
}

module.exports = {
  bankData,
  sendBankData,
  checkProcessingStatus,
  checkBankTransactions
};